The present invention relates to computing systems, and deals more particularly with determining the configuration (and optionally, the pricing) of a system. Still more particularly, this determination is made using architectural artifacts that describe requirements of the system (which may be comprised of software, hardware, services, or some combination thereof), where these requirements are iteratively compared to characteristics of available components.
Component-based design often involves identifying the right components—that is, components that meet certain requirements—and putting those components together (often called “integration”). In the case of a software system, this process is often performed by a software architect who searches a repository of reusable components, manually evaluates the amount of change or adaptation needed for various ones of these existing components that may be selected, and also manually examines the compatibility and/or dependency between the various components. The software architect may also consider requirements of a service level agreement (“SLA”) or quality requirements for a target application in which the components are to be used. (A similar approach may be followed for systems comprised of non-software components, or of such other components in combination with software.)
This existing approach may be tedious and error-prone, particularly when there are a large number of potentially similar components available from which the architect must choose.